package com.itcam.tingshu.search.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @author : Cammy.Wu
 * Description : 线程池配置类
 */

@Configuration
public class ThreadPoolExecutorConfig {

    @Bean
    public ThreadPoolExecutor threadPoolExecutor() {
        // 创建线程池
        return new ThreadPoolExecutor(
                10,                         // 核心线程数 【cpu密集型：n+1；io密集型：2n】 —— n为核数
                20,                                     // 最大线程数
                3,                                      // 空闲线程存活时间
                TimeUnit.SECONDS,                       // 时间单位
                new ArrayBlockingQueue<>(1000) // 阻塞队列
                // Executors.defaultThreadFactory(),       // 线程工厂
                // new ThreadPoolExecutor.AbortPolicy()    // 拒绝策略
        );
    }
}
